package com.imut.lagain.service.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.imut.lagain.entity.MoodStealRecord;
import com.imut.lagain.mapper.MoodStealRecordMapper;
import com.imut.lagain.repository.MoodStealRecordRepository;
import com.imut.lagain.service.IMoodStealRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 心情偷取记录服务实现类
 */
@Service
public class MoodStealRecordServiceImpl extends ServiceImpl<MoodStealRecordMapper, MoodStealRecord> implements IMoodStealRecordService {
    private static final Logger log = LoggerFactory.getLogger(MoodStealRecordServiceImpl.class);

    
    @Autowired
    private MoodStealRecordRepository moodStealRecordRepository;
    
    /**
     * 根据偷取者ID查询心情偷取记录
     * @param thiefUserId 偷取者ID
     * @param page 分页参数
     * @return 心情偷取记录分页列表
     */
    @Override
    public IPage<MoodStealRecord> findByThiefUserId(Long thiefUserId, Page<MoodStealRecord> page) {
        return moodStealRecordRepository.findByThiefUserId(thiefUserId, page);
    }
    
    /**
     * 根据被偷者ID查询心情偷取记录
     * @param victimUserId 被偷者ID
     * @param page 分页参数
     * @return 心情偷取记录分页列表
     */
    @Override
    public IPage<MoodStealRecord> findByVictimUserId(Long victimUserId, Page<MoodStealRecord> page) {
        return moodStealRecordRepository.findByVictimUserId(victimUserId, page);
    }
    
    /**
     * 根据小偷ID查询心情偷取记录
     * @param thiefId 小偷ID
     * @param page 分页参数
     * @return 心情偷取记录分页列表
     */
    @Override
    public IPage<MoodStealRecord> findByThiefId(Long thiefId, Page<MoodStealRecord> page) {
        return moodStealRecordRepository.findByThiefId(thiefId, page);
    }
    
    /**
     * 根据条目ID查询心情偷取记录
     * @param entryId 条目ID
     * @return 心情偷取记录列表
     */
    @Override
    public List<MoodStealRecord> findByEntryId(Long entryId) {
        return moodStealRecordRepository.findByEntryId(entryId);
    }
    
    /**
     * 查询指定时间范围内的偷取记录
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param page 分页参数
     * @return 心情偷取记录分页列表
     */
    @Override
    public IPage<MoodStealRecord> findByTimeRange(LocalDateTime startTime, LocalDateTime endTime, Page<MoodStealRecord> page) {
        return moodStealRecordRepository.findByTimeRange(startTime, endTime, page);
    }
    
    /**
     * 统计偷取者ID的偷取记录数量
     * @param thiefUserId 偷取者ID
     * @return 偷取记录数量
     */
    @Override
    public Long countByThiefUserId(Long thiefUserId) {
        return moodStealRecordRepository.countByThiefUserId(thiefUserId);
    }
    
    /**
     * 统计被偷者ID的被偷记录数量
     * @param victimUserId 被偷者ID
     * @return 被偷记录数量
     */
    @Override
    public Long countByVictimUserId(Long victimUserId) {
        return moodStealRecordRepository.countByVictimUserId(victimUserId);
    }
}
